Generate empty or random directed acyclic graphs from a given set of nodes.
empty.graph(nodes, num = 1)
random.graph(nodes, num = 1, method = "ordered", ..., debug = FALSE)
a vector of character strings, the labels of the nodes.
an integer, the number of graphs to be generated.
a character string, the label of a score. Possible values are
ordered
(full ordering based generation), ic-dag
(Ide's and Cozman's Generating Multi-connected DAGs algorithm),
melancon
(Melancon's and Philippe's Uniform Random Acyclic
Digraphs algorithm) and empty
(generates empty graphs).
additional tuning parameters (see below).
a boolean value. If TRUE
a lot of debugging output is
printed; otherwise the function is completely silent. Ignored in some
generation methods.
Both empty.graph()
and random.graph()
return an object of class
bn
(if num
is equal to 1
) or a list of objects of class
bn
(otherwise). If every
is greated than 1
,
random.graph
always returns a list, regardless of the number of graphs
it contains.
Available graph generation algorithms are:
full ordering based generation (ordered
): generates
graphs whose node ordering is given by the order of the labels in the
nodes
argument. The same algorithm is used in the
randomDAG
function in package pcalg.
Ide's and Cozman's Generating Multi-connected DAGs algorithm
(ic-dag
): generates graphs with a uniform probability
distribution over the set of multiconnected graphs.
Melancon's and Philippe's Uniform Random Acyclic Digraphs
algorithm (melancon
): generates graphs with a uniform probability
distribution over the set of all possible graphs.
empty graphs (empty
): generates graphs without any arc.
Additional arguments for the random.graph
function are:
prob
: the probability of each arc to be present in a graph
generated by the ordered
algorithm. The default value is
2 / (length(nodes) - 1)
, which results in a sparse graph (the
number of arcs should be of the same order as the number of nodes).
burn.in
: the number of iterations for the ic-dag
and
melancon
algorithms to converge to a stationary (and uniform)
probability distribution. The default value is 6 * length(nodes)^2
.
every
: return only one graph every
number of steps
instead of all the graphs generated with ic-dag
and
melancon
. Since both algorithms are based on Markov Chain Monte
Carlo approaches, high values of every
result in a more diverse
set of networks. The default value is 1
, i.e. to return all the
networks that are generated.
max.degree
: the maximum degree for any node in a graph
generated by the ic-dag
and melancon
algorithms. The default
value is Inf
.
max.in.degree
: the maximum in-degree for any node in a graph
generated by the ic-dag
and melancon
algorithms. The default
value is Inf
.
max.out.degree
: the maximum out-degree for any node in a graph
generated by the ic-dag
and melancon
algorithms. The default
value is Inf
.
Ide JS, Cozman FG (2002). "Random Generation of Bayesian Networks". Proceedings of the 16th Brazilian Symposium on Artificial Intelligence, 366--375.
Melancon G, Dutour I, Bousquet-Melou M (2001). "Random Generation of Directed Acyclic Graphs". Electronic Notes in Discrete Mathematics, 10:202--207.
Melancon G, Philippe F (2004). "Generating Connected Acyclic Digraphs Uniformly at Random". Information Processing Letters, 90(4):209--213.
# NOT RUN {
empty.graph(LETTERS[1:8])
random.graph(LETTERS[1:8])
plot(random.graph(LETTERS[1:8], method = "ic-dag", max.in.degree = 2))
plot(random.graph(LETTERS[1:8]))
plot(random.graph(LETTERS[1:8], prob = 0.2))
# }
Run the code above in your browser using DataLab